﻿
namespace SistemaLogistica.Windows.Panels
{
    using System;
    using System.Collections.Generic;
    using EDOSwit.Controls.Helpers;
    using SistemaLogistica.Business.Entities;
    using SistemaLogistica.Business.Logic;
    using SistemaLogistica.Windows.Helpers;

    public partial class PermisosUsuario : EDOSwit.Security.PermisosUsuario
    {
        public PermisosUsuario()
        {
            InitializeComponent();

            menusLectura = new List<byte>();
            menusLectura.Add(9);  // Reportes de Almacen
            menusLectura.Add(12); // Reportes de Adquisicion
            menusLectura.Add(15); // Reportes de Bien Patrimonial
            menusLectura.Add(18); // Reportes de Transporte
            menusLectura.Add(21); // Reportes de Telefonia
        }

        protected override void LoadMenus()
        {
            try
            {
                List<Menus> menus = new List<Menus>();
                menus = MenusManager.Instancia.ListarPorContenedor(null);

                List<EDOSwit.Security.Menus> menusEDOSwit = new List<EDOSwit.Security.Menus>();

                foreach (Menus m in menus)
                {
                    menusEDOSwit.Add(new EDOSwit.Security.Menus { MenuID = m.IdMenu, Nombre = m.Nombre });
                }
                this.cmbMenus.DataSource = menusEDOSwit;
            }
            catch (Exception ex)
            {
                Mensaje.ShowMessageAlert(this.ParentForm, Constantes.TituloMensaje, ex.Message);
            }
        }

        protected override List<EDOSwit.Security.Formulario> GetFormulariosByMenuID(byte menuID)
        {
            List<EDOSwit.Security.Formulario> formulariosEDOSwit = new List<EDOSwit.Security.Formulario>();
            try
            {
                List<Menus> menus = MenusManager.Instancia.ListarPorContenedor(menuID);
                List<Formulario> formularios = new List<Formulario>();
                formularios.AddRange(FormularioManager.Instancia.ListarPorMenus(menuID));

                if (menus != null)
                {
                    foreach (Menus m in menus)
                    {
                        formularios.AddRange(FormularioManager.Instancia.ListarPorMenus(m.IdMenu));
                    }
                }

                foreach (Formulario f in formularios)
                {
                    formulariosEDOSwit.Add(new EDOSwit.Security.Formulario { FormularioID = f.IdFormulario, MenuID = f.IdMenu, Nombre = f.Nombre });
                }
            }
            catch (Exception ex)
            {
                Mensaje.ShowMessageAlert(this.ParentForm, Constantes.TituloMensaje, ex.Message);
            }
            return formulariosEDOSwit;
        }

        protected override List<EDOSwit.Security.Permiso> GetPermisosByUsuarioAndFormulario(short usuarioID, byte formularioID)
        {
            return Metodos.GetPermisos(formularioID);
        }

        public List<Permiso> GetPermisos()
        {
            List<Permiso> permisos = new List<Permiso>();

            foreach (EDOSwit.Security.Permiso p in this.Permisos)
            {
                permisos.Add(new Permiso
                {
                    IdEmpleado = p.UserID,
                    IdFormulario = p.FormularioID,
                    TipoPermiso = (byte)p.TipoAcceso,
                    Estado = p.Estado
                });
            }

            return permisos;
        }

        public void ClearAllPermisos()
        {
            this.Permisos = new List<EDOSwit.Security.Permiso>();
        }
    }
}
